МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ, МОЛОДІ ТА СПОРТУ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
З В І Т
до лабораторної роботи №1
з курсу: «Алгоритмічні основи криптології»
на тему: «Алгоритми для виконання операцій з довгими числами»
Варіант № 9
Львів – 2013р.
Мета роботи - вивчити способи представлення та алгоритми для виконання операцій введення-виведення, порівняння, підсумовування, віднімання довгих чисел та навчитися розробляти програмне забезпечення для реалізації перерахованих алгоритмів на комп’ютері.
Завдання
Скласти блок-схеми алгоритмів, підпрограми та програму для реалізації адитивних операцій та операцій порівняння для роботи з довгими числами. Дані для лабораторні наведені в таблиці.
Варіант
Варіант представлення числа
Заповнення невикористаних розрядів
Операції х довгими числами
9
1
-1
Додавання, більше або рівно
Блок-схема алгоритму програми
Блок-схема алгоритму введення довгого числа.
Блок-схеми алгоритмів порівняння довгих чисел.
Алгоритм виведення довгого числа.
Блок-схема алгоритму додавання довгих чисел.
Список ідентифікаторів констант, змінних, функцій,
використаних у блок-схемі алгоритму і програмі,
та їх пояснення
a, b, c, d – одновимірні масиви типу integer.
s – змінна типу string, що використовується для зчитування довгих чисел з файлів;
Vvedennia_Chysla – метод який не має аргументів, забезпечує зчитування довгих чисел з файлів;
Vyvedennia_Chysla(int[] d, string st)– метод який реалізовує виведення довгого числа d, а також він виводить на екран значення змінної st;
Rivnist(int[] q1, int[] q2)- метод, який перевіряє рівність двох довгих чисел q1 s q2, даний метод повертає значення типу boolean(true або false);
Bilshe(int[] q1, int[] q2) - метод, що перевіряє чи число q1 є більшим за q2, повертає значення типу bool;
Dodavannia(int[] q1, int[] q2) - метод, що здійснює додавання двох довгих чисел q1 і q2.
Текст програми
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Dobge_Chyslo t = new Dobge_Chyslo();
Console.ReadLine();
}
}
class Dobge_Chyslo
{
string s;
int[] a, b, c, d;
int i, j, n, g, osn, k, temp, f;
public Dobge_Chyslo()
{
k = 4;
osn = 10000;
Zchytuvannia_a_b();
Dodavannia(a, b);
Vyvedennia_Chysla(d, "a+b=");
if (Bilshe(a, b) || Rivnist(a, b))
Console.WriteLine("a>=b true");
else Console.WriteLine("a>=b false");
}
void Vvedennia_Chysla()
{
FileStream stream = new FileStream(s + ".txt", FileMode.Open);
StreamReader reader = new StreamReader(stream);
s = reader.ReadToEnd();
stream.Close();
n = s.Length / k;
g = s.Length % k;
if (g != 0) n++;
c = new int[n + 1];
c[0] = n;
s.ToCharArray();
for (i = s.Length - 1; i >= g; i -= k)
{
for (j = 0, temp = 0; j < k; j++)
temp += (Convert.ToInt32(s[i - j]) - 48) * Convert.ToInt32(Math.Pow(10, j));
c[n] = temp;
n--;
}
if (g != 0)
{
for (j = 0, temp = 0; j < g; j++)
temp += (Convert.ToInt32(s[g - j - 1]) - 48) * Convert.ToInt32(Math.Pow(10, j));
c[n] = temp;
}
}
void Zchytuvannia_a_b()
{
s = "a";
Vvedennia_Chysla();
a = new int[c[0] + 1];
for (i = 0; i < c[0] + 1; a[i] = c[i], i++) ;
s = "b";
Vvedennia_Chysla();
b = new int[c[0] + 1];
for (i = 0; i < c[0] + 1; b[i] = c[i], i++) ;
Vyvedennia_Chysla(a, "a=");
...